package buffer1;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

/*练习三:字符输出流写出字符数据并存到集合中
         需求说明：从控制台接收3名学员的信息，每条信息存储到一个Student对象中，
         将多个Student对象存储到一个集合中。输入完毕后，将所有学员信息存储到文件Student.txt中。
         每名学员信息存储一行，多个属性值中间用逗号隔开。*/
public class Test6 {//定义一个测试类

    public static void main(String[] args) throws Exception {//main方法入口并同时抛出异常类基类
        FileOutputStream fos = new FileOutputStream("IO\\Student.txt");//创建字符输出流对象讲控制台输入的信息写进指定文件目录下
        Scanner sc = new Scanner(System.in);//创建键盘录入对象
        System.out.println("请输入第一个学生的姓名");//输出提示语句，请输入第一个学生的姓名
        String s1 = sc.nextLine();//定义字符串变量接受键盘录入的信息
        System.out.println("请再输入第一个学生的年龄");//输入提示语句
        String s2 = sc.nextLine();//定义变量接受
        System.out.println("请输入第二个学生的姓名");//提示语句
        String s3 = sc.nextLine();//定义变量进行接受
        System.out.println("请输入第二个学生的年龄");//提示语句
        String s4 = sc.nextLine();//定义变量进行接受
        System.out.println("请输入第三个学生的姓名");//提示语句
        String s5 = sc.nextLine();//定义变量接受键盘录入的数据
        System.out.println("请输入第三个学生的年龄");//提示语句
        String s6 = sc.nextLine();//定义变量接受键盘录入的数据
        ArrayList<Student> list = new ArrayList<>();//创建集合对象，存储录入的学生对象
        Student student1 = new Student(s1, s2);//通过学生有参数构造方法讲输入的信息作为参数存入到学生对象中
        Student student2 = new Student(s2, s3);//通过学生有参数构造方法将键盘录入的信息作为参数存入到学生对象中
        Student student3 = new Student(s4, s5);//通过学生有参数构造方法将键盘录入的信息作为参数存入到学生对象中
        list.add(student1);//将学生对象存入集合中
        list.add(student2);//将学生对象存入集合中
        list.add(student3);//将学生对象存入到集合中
        for (Student student : list) {//遍历集合得到每一个对象
            StringBuilder sb = new StringBuilder();//创建StringBulider对象
            sb.append(student.getName()).append(",").append(student.getAge());
            //使用StringBulider对象调用append方法将获取的学生信息按照指定的格式拼接
            fos.write((sb.toString()).getBytes());//通过字符输出流对象调用write方法将拼接字符串写入到指定文件目录下
            // 同时将StringBulider对象转化为String 类型
            fos.write("\r\n".getBytes());//分隔符
        }
        fos.close();//关闭资源
    }
}
